package pe.edu.upc.jaxws.dao;

import java.util.List;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.stereotype.Repository;

/**
* @author Marko Ramirez Larzo
*/
import pe.edu.upc.jaxws.model.RemitoTraslado;
 

@Repository
public class RemitoTrasladoDaoJdbc  extends SimpleJdbcDaoSupport implements RemitoTrasladoDao {

	@Autowired
	public  RemitoTrasladoDaoJdbc(DataSource dataSource) {
		setDataSource(dataSource);
	} 
					

	@Override
	public RemitoTraslado getRemitoPorCodigo(String codigo) {
		try {
			
        /*return getSimpleJdbcTemplate().queryForObject(" SELECT COD_DESPACHO,TIPO_ENVIO,EMISION,REMITO,COD_CLIENTE, "+
													  " CIUDAD_ORIGEN,CIUDAD_DESTINO,CONSIGNADO,DIRECCION_ENTREGA, "+
													  " NRO_VOLUMEN,PESO_REAL,COD_HIDROCARBURO,COD_STATUS, "+
													  " FECHA_CARGA,FECHA_DESCARGA "+
													  " FROM REMITO_TRASLADO WHERE REMITO = ?",*/
        return getSimpleJdbcTemplate().queryForObject(" 		"+									  
													  " SELECT R.COD_DESPACHO ,R.TIPO_ENVIO,R.EMISION,R.REMITO,C.RAZON_SOCIAL AS COD_CLIENTE,  "+
													  " R.CIUDAD_ORIGEN,R.CIUDAD_DESTINO,R.CONSIGNADO,R.DIRECCION_ENTREGA,  "+
													  " R.NRO_VOLUMEN,R.PESO_REAL,H.DESCRIPCION AS COD_HIDROCARBURO,E.DESCRIPCION AS COD_STATUS,  "+
													  " R.FECHA_CARGA,R.FECHA_DESCARGA  "+
													  " FROM REMITO_TRASLADO R, CLIENTE C , HIDROCARBURO H, ESTADO E "+
													  " WHERE  R.COD_CLIENTE = C.COD_CLIENTE "+
													  " AND R.COD_HIDROCARBURO = H.COD_HIDROCARBURO "+
													  " AND R.COD_STATUS = E.COD_ESTADO "+
													  " AND R.REMITO = ? ",													  
													  
				new BeanPropertyRowMapper<RemitoTraslado>(RemitoTraslado.class),codigo);	
		} catch (EmptyResultDataAccessException e) {
			return null;
		}
	}

	@Override
	public List<RemitoTraslado> getRemitoTraslado() {
		try {		
		return getSimpleJdbcTemplate().query(
						  "SELECT TIPO_ENVIO,EMISION,REMITO,COD_CLIENTE," +
						  "CIUDAD_ORIGEN,CIUDAD_DESTINO,CONSIGNADO,"+
						  "DIRECCION_ENTREGA,NRO_VOLUMEN,PESO_REAL," +
						  "COD_HIDROCARBURO,COD_STATUS,FECHA_CARGA,FECHA_DESCARGA " +
						  "FROM REMITO_TRASLADO ",
				new BeanPropertyRowMapper<RemitoTraslado>(RemitoTraslado.class));
	} catch (EmptyResultDataAccessException e) {
			return null;		
    } catch (Exception ex) {
        ex.printStackTrace();						
    }
		return null; 
    
	}


	@Override
	public void insertar(RemitoTraslado remitoTraslado){		
		String sql = "INSERT INTO REMITO_TRASLADO(" +
						"TIPO_ENVIO,EMISION,REMITO,COD_CLIENTE," +
						"CIUDAD_ORIGEN,CIUDAD_DESTINO,CONSIGNADO,"+
						"DIRECCION_ENTREGA,NRO_VOLUMEN,PESO_REAL," +
						"COD_HIDROCARBURO,COD_STATUS,FECHA_CARGA,FECHA_DESCARGA " +	
						") VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )";
			getJdbcTemplate().update(sql, 
					remitoTraslado.getTipoEnvio(), 
					remitoTraslado.getEmision(), 
					remitoTraslado.getRemito(),
					remitoTraslado.getCodCliente(), 
					remitoTraslado.getCiudadOrigen());					
	}
	
}
